package com.example.question.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.question.entity.Question;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 题目Mapper接口
 * 继承MyBatis-Plus的BaseMapper，提供基础的CRUD操作
 * 用于管理题目的数据库操作
 * @author 颜殿
 */
@Mapper
public interface QuestionMapper extends BaseMapper<Question> {

    /**
     * 根据难度分页查询题目
     * @param page 分页参数
     * @param difficulty 难度级别
     * @return 分页结果
     */
    Page<Question> selectPageByDifficulty(Page<Question> page, @Param("difficulty") Question.Difficulty difficulty);

    /**
     * 根据分类名称查询题目
     * 分类名称与题目标题进行比对查询
     * @param page 分页参数
     * @param categoryName 分类名称
     * @return 分页结果
     */
    IPage<Question> selectPageByCategory(Page<Question> page, @Param("categoryName") String categoryName);

    /**
     * 根据状态分页查询题目
     * @param page 分页参数
     * @param status 状态值(0:启用, 1:禁用)
     * @return 分页结果
     */
    Page<Question> selectPageByStatus(Page<Question> page, @Param("status") Integer status);

    /**
     * 根据描述关键字分页查询题目
     * @param page 分页参数
     * @param keyword 描述关键字
     * @return 分页结果
     */
    Page<Question> selectPageByDescription(Page<Question> page, @Param("keyword") String keyword);
}